This invention relates in general to the field of computer networks, and more particularly to a method and system for establishing a storage area network configuration.
Demand for data storage capacity has substantially increased as data intensive applications have grown more common. For instance, interactive database applications, such as internet applications that allow remote access to data, have substantial data storage demands and operate most effectively if data is readily accessible. In addition to having a greater need for data storage capacity, these applications provide improved user utility with rapid data access and with the ability to share pooled data among a large number of users over distributed locations. To meet demands for increased storage capacity and more rapid access to data, the computer industry has developed storage area networks (xe2x80x9cSANxe2x80x9d), a collection of data storage devices interfaced with one or more servers or workstations. Storage area networks offer scalable technology based on small computer system interface (xe2x80x9cSCSIxe2x80x9d) and fibre channel protocol (FCP) compliant systems, frequently interconnected with hubs or switches.
Storage area networks offer centralized storage of data for increased efficiency and data handling. A properly implemented storage area network provides data access reliability and availability, unobtrusive capacity expansion such as with the addition of data storage devices, improved data backup and recovery, and performance that is competitive with local data storage. Many of the advantages of storage area networks are described in greater detail in an August 1998 Dell computer whitepaper entitled xe2x80x9cStorage Area Network Technologyxe2x80x9d published at www.dell.com/randd/whitepapers/wpsan.html and a February 1999 Dell computer whitepaper entitled xe2x80x9cStorage Area Network Solutionsxe2x80x9d published at www.dell.com/randd/wp/spring99/sansol.html.
Although, storage area networks offer many advantages for the efficient and timely distribution of data across a distributed network, some difficulties exist in the implementation of a storage area network, particularly as the number of devices interfaced with the storage area network increases. For instance, in a fibre channel storage area network environment with multiple initiators sending fibre channel protocol (FCP-SCSI) commands, the overhead related to these FCP-SCSI commands tends to use excessive bandwidth of the storage area network, potentially leading to a slowdown or even disruption of data transfers through the network.
Each target associated with a storage area network generally has a queue allotted to accept commands from initiators associated with the storage area network. The initiators seek to store data in or retrieve data from the target by sending commands to the target through the network. When a target queue is full the target responds to initiator FCP-SCSI commands, known as FCP_CMND commands, with a queue full response of TASK_FULL status in the FCP_RSP to indicate the queue is full and unable to accept or process the command from the initiator. When an initiator receives a queue full indication from a target device, the initiator generally retries sending the command to the target device at a subsequent time. Each initiator command and queue full response absorbs bandwidth of the storage area network, resulting in slowdowns of data transfer across the network. Further, in addition to creating unnecessary overhead activities on the network, the initiator attempts and queue full response increase CPU utilization in the targets and the initiators. Particularly during heavy network and CPU usage, initiators and targets sometimes fail to communicate properly resulting in timeouts with the dropping of frames or packets of data. In short, the initiators and targets become too busy to communicate with each other and to busy to communicate that they are too busy.
Therefore, a need has arisen for a method and system which establishes a storage area network configuration to reduce overhead transactions on the storage area network, including overhead associated with target queue full states.
A further need exists for a method and system which establishes a storage area network configuration to reduce CPU utilization associated with overhead commands of the storage area network.
In accordance with the present invention, a method and system is provided that substantially eliminates or reduces disadvantages and problems associated with previously developed storage area networks. The method and system monitors signals of the storage area network to determine the number of initiators associated with the storage area network. Based upon the determination of the number of initiators, the method and system may automatically adjust the queue depth of at least one initiator associated with the storage area network.
More specifically, during initialization of the storage area network, an ID engine associated with an initiator interfaced with the storage area network monitors the signals communicated with over the storage area network to identify and count the port login commands provided by other initiators interfaced with the storage area network. During initialization, initiators provide port login commands to each target to identify the targets. Each initiator has a unique worldwide name included in the port login command. By tracking the unique names received during initialization of the storage area network, the initiator ID engine determines the number of other initiators associated with the storage area network. The initiator ID engine determines the total number of initiators by counting the unique login names and adding one to represent itself.
Once an initiator determines the number of initiators that are associated with the storage area network, the initiator automatically adjusts its queue depth from an initial queue depth to an adjusted queue depth having a value dependant upon the number of initiators associated with the storage area network. The adjusted queue depth limits the number of commands that the initiator can send to a predetermined target based upon the number of commands that the target is able to accept.
In one embodiment, an initiator""s queue depth for a target may be set at a value equal to the total number of commands the target can accept divided by the total number of initiators associated with the target. Thus, if each initiator interfaced with the storage area network has an ID engine and configures an adjusted queue depth in proportion to the total number of initiators divided by the target""s ability to accept commands, the target should avoid a task full status.
In an alternative embodiment, an initiator""s queue depth for a target may be set at a value greater than or less than the queue depth of other initiators to compensate for initiator bandwidth to that target. Thus, each initiator may have an adjusted queue depth for each target associated with a storage area network so that the adjusted queue depth is established on a target-by-target basis.
The method and system for determining the number of initiators and adjusting initiator queue depth provides a number of important technical advantages. One important technical advantage is the automatic determination of the number of initiators interfaced with a network without operator intervention. The automatic determination tracks changes to network configuration, such as the addition or deletion of initiators from the network, each time the network is initialized. This accurate and reliable determination of the number of initiators supports optimal configuration of the network through reconfiguration of network devices.
Another important technical advantage is the automatic adjustment of queue depth of one or more initiators to an adjusted queue depth having a value dependent upon the number of initiators. The adjusted queue depth reduces network and CPU utilization by overhead commands associated with storage and retrieval of data. For instance, when the adjusted queue depth of one or more initiators for providing commands to a predetermined target is less than the number of commands that the target can handle, network and CPU utilization are reduced since initiator commands to the target will generally not result in a queue full status response from the target. Rather, initiators will wait to send commands to a target until the adjusted queue depth of the initiator indicates an ability by the target to handle the command.